// 人员管理相关的配置
import axios from "axios";
import {nanoid} from "nanoid";

const personOptions = {
    // 命名空间必须写成true，mapState取值的时候才可以识别，否则获取不到State里面的值
    namespaced: true,
    actions: {
        // 其中 actions 执行相关的业务
        addPersonWang(context, value) {
            // 必须是姓王的
            if (value.name.indexOf('王') === 0) {
                context.commit('ADD_PERSON', value);
            }
        },
        // 向服务器端发送请求获取到person信息
        addPersonServer(context) {
            axios.get('https://v1.jinrishici.com/all.json').then((response) => {
                console.log(response.data.author);
                const person = {
                    id: nanoid(),
                    name: response.data.author,
                    age: 18
                }
                context.commit('ADD_PERSON', person);
            }).catch((error) => {
                throw error;
            });
        }
    },
    mutations: {
        ADD_PERSON(state, value) {
            console.log('如果Actions没有业务操作，可以直接执行mutations：', value);
            state.personList.unshift(value);
        }
    },
    state: {
        personList: [
            {id: '001', name: '张飒飒', age: 18},
            {id: '002', name: '李思思', age: 18},
            {id: '003', name: '王舞', age: 18},
            {id: '004', name: '赵柳', age: 18},
        ]
    },
    getters: {
        // 获取到数组第一个姓名
        firstPersonName(state) {
            return state.personList[0].name;
        }
    }
}

// 默认暴露
export default personOptions;